﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Fuyao.Business.Entities.Models;
using Fuyao.Business.Logic.BC;
using Fuyao.Win.UI.Util;
using Fuyao.Win.UI.Common;

namespace Fuyao.Win.UI.Ventas
{
    public partial class frmListOrdenCompra : Form
    {
        BusinessLogic bc = new BusinessLogic();
        List<Pedido> listPedido = new List<Pedido>();

        public frmListOrdenCompra()
        {
            InitializeComponent();
        }

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            this.ControlBox = false;
            this.WindowState = FormWindowState.Maximized;
            this.BringToFront();
        }

        private void btnNuevaGuiaInterna_Click(object sender, EventArgs e)
        {
            Ventas.frmOrdenCompra frm = new Ventas.frmOrdenCompra();
            frm.ShowDialog();
            if (frm.action) cargarGrillaGuiaInterna(false);
        }

        private void cargarGrillaGuiaInterna(bool _flag)
        {
            Pedido bePedido = new Pedido();
            bePedido.NroPedido = Convert.ToInt32(this.txtNroGuiaInterna.Text.Trim() == string.Empty ? "0" : this.txtNroGuiaInterna.Text.Trim());
            bePedido.NombreCliente = this.txtCliente.Text.Trim() == string.Empty ? "0" : this.txtCliente.Text.Trim();
            bePedido.VendedorId = Convert.ToInt32(this.cboVendedor.SelectedValue);
            bePedido.FechaCreacion = Convert.ToDateTime(this.dtpFechaCreacion.Value.ToShortDateString());
            bePedido.FechaDesde = Convert.ToDateTime(this.dtpFechaCreacionTO.Value.ToShortDateString());
            bePedido.Estado = this.rbtnCreado.Checked ? Constantes.GUIAINTERNA_CREADO : Constantes.GUIAINTERNA_ANULADO;
            listPedido = bc.getAllGuiaInternaByFilter(bePedido);
            if (listPedido.Count > 0) dgvGuiaInterna.DataSource = listPedido;
            else
            {
                if (!_flag)
                {
                    MessageBox.Show("No se encontraron registros, verifique los filtros de búsqueda", "Sistema FUYAO - Mensaje de Confirmación", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    dgvGuiaInterna.DataSource = null;
                }
            }
        }

        private void setColumnasGrilla()
        {
            ColNroPedidoDesc.DataPropertyName = "NroPedidoDesc";
            colCliente.DataPropertyName = "NombreCliente";
            colVendedor.DataPropertyName = "VendedorNombre";
            colFechaCreacion.DataPropertyName = "FechaCreacion";
            colManejadoX.DataPropertyName = "ManejadoPor";
            colTotal.DataPropertyName = "Total";
            colEstado.DataPropertyName = "DescEstado";
        }

        private void limpiarControles()
        {
            Utilitarios.limpiarControles(this);
        }     

        private bool validarFiltrosFecha()
        {
            bool isValid = true;
            if (Convert.ToDateTime(dtpFechaCreacion.Value.ToShortDateString()) > Convert.ToDateTime(dtpFechaCreacionTO.Value.ToShortDateString()))
            {
                MessageBox.Show("La Fecha Inicial no puede ser mayor a la Fecha de Fin", "Sistema FUYAO - Validando opción", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                isValid = false;
            }
            return isValid;
        }

        private void txtNroGuiaInterna_KeyPress(object sender, KeyPressEventArgs e)
        {
            Utilitarios.vSoloNumeros(e);
            if (e.KeyChar == Convert.ToChar(Keys.Enter)) this.txtCliente.Focus();
        }
   
        private void frmListOrdenCompra_Load(object sender, EventArgs e)
        {
            Utilitarios.configurarGrilla(ref dgvGuiaInterna);
            cargarCboVendedores();
            setColumnasGrilla();
            cargarGrillaGuiaInterna(true);
        }

        private void cargarCboVendedores()
        {
            Utilitarios.cargarCboVendedores(this.cboVendedor);
        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnMaximizar_Click(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Maximized;
        }

        private void btnRestaurar_Click(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Normal;
        }

        private void btnEditarGuia_Click(object sender, EventArgs e)
        {
            if (dgvGuiaInterna.RowCount == 0)
            {
                MessageBox.Show("No existen registros para Editar", "Sistema FUYAO - Validando Opción", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (dgvGuiaInterna.CurrentRow != null && dgvGuiaInterna.CurrentRow.DataBoundItem != null)
            {
                Pedido oPedido = (Pedido)dgvGuiaInterna.CurrentRow.DataBoundItem;
                Ventas.frmOrdenCompra frm = new Ventas.frmOrdenCompra();
                frm.PedidoID = oPedido.PedidoID;
                frm.ShowDialog();
                if (frm.action) cargarGrillaGuiaInterna(false);
            }
            else
            {
                MessageBox.Show("Seleccione un registro para Editar", "Sistema FUYAO - Validando Opción", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }          
        }

        private void btnBuscarOrdenCompra_Click(object sender, EventArgs e)
        {
            if (validarFiltrosFecha()) cargarGrillaGuiaInterna(false);           
        }

        private void txtCliente_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(Keys.Enter)) this.btnBuscarOrdenCompra.Focus();
        }
    }
}
